<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    //ToNumber:
    //对象或数组会首先被转换为相应的基本类型值 如果返回的是非数字的基本类型值 
    // true:1 false:0 undefined:NaN null:0
    //为了将值转换为相应的基本类型值 抽象操作ToPrimitive会首先检查该值是否有valueOf方法 如果有并
    //返回基本类型值 就使用该值进行强制类型转换 
    //如果没有就用toString()的返回值来进行强制类型转换
    //如果valueOf()和toString()均不返回基本类型值 会产生TypeError错误
    var b = {
        a:1,

    }   
     console.log( b.valueOf())
    //假值对象并不是包装了假值的封装对象
    console.log("42px".toString())
    console.log("42px".valueOf()) 
    console.log( Number( "42px" ))

     

    //假值的布尔强制类型转换结果为false
    //undefined null false +0 -0 NaN ""
    console.log( Boolean(false)) 

    var a = [
        1,
        function(){

        },
        2
    ]
    console.log(JSON.stringify(a))
    
</script>
</html>